package com.spring.aop.AspectJ;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;

/*
 * 切面类
 */

public class MyAspectXML {
	/*
	 * 前置通知  ，JoinPoint 真正的方法切入点
	 */
	public void checkPri(JoinPoint joinPoint) {
		System.out.println("权限检查==========="+joinPoint);
	}
	
	/*
	 * 后置
	 */
	public void  writeLog( Object  result) {
		System.out.println("日志记录============"+result);
	}
	
	/*
	 * 环绕，可以阻止目标方法的执行
	 */
	public Object  around(ProceedingJoinPoint  joinPoint) throws Throwable {
		System.out.println("=============环绕前通知");
		Object  object = joinPoint.proceed();
		System.out.println("环绕后通知=========");
		return object;
	}
	
	/*
	 * 异常抛出通知
	 */
	public void afterThrowing( Throwable ex ) {
		System.out.println("=====异常抛出====="+ex.getMessage());
	}
	
	/*
	 * 最终通知，无论怎样都会执行
	 * 
	 */
	public void after() {
		System.out.println("最终通知||||||||||||||||||||||||||");
	}
}
